TalendでAmazonS3に接続するコンポーネントまとめ
はじめに
タイトルの通り、TalendでAmazonS3に関連するコンポーネントをご紹介します。 AmazonS3にCSV/TSV形式でデータのバックアップを取る、 RedshiftにCopyするためのファイルを置くなど、AmazonS3関連のコンポーネントを使う機会も少なくありません。
AmazonS3に関連したコンポーネント一覧
Talend Open Studio 6.2.0でAmazonS3に関連するコンポーネントは以下のものがあります。 コンポーネント名を見ればどういった機能かといったことも分かります。
コンポーネント名 | 機能 |
---|---|
tS3BucketCreate | S3のバケットを作成 |
tS3BucketDelete | S3のバケットを削除 |
tS3BucketExist | S3バケットの存在チェック |
tS3BucketList | S3のバケット一覧リスト化 |
tS3Close | S3への接続を閉じる |
tS3Connection | S3へ接続する |
tS3Copy | S3のファイルをコピーする |
tS3Delete | S3のファイルを削除 |
tS3Get | S3からファイルを取得 |
tS3List | S3のファイル一覧リスト化 |
tS3Put | S3にファイルをアップロード |
使ってみましょう
大体同じような感じで使えるので、悩むことはほとんどないかと思います。 全てのコンポーネントに共通することとして、AWSのアクセスキー・シークレットアクセスキーをセットする必要があります(tS3Connectionを使うのであれば、既存の接続を使いまわすことで省略できます)。 ※また、バージョン6.2.0からAmazon EC2上で実行するのであれば設定する必要がなくなったようです。詳しくはコチラの記事をご覧ください。
tS3BucketCreateとtS3BucketDelete
コンポーネントにAWSのアクセスキーとシークレットアクセスキー、作成したい/削除したいバケット名を設定します。 ジョブを実行すれば、S3にバケットが作成/削除されます。
tS3BucketExist
このコンポーネントに設定することはtS3BucketCreate、tS3BucketDeleteと一緒ではあります。 入力したバケット名が存在する場合はtrue、存在しない場合はfalseがglobalMapにセットされます。 処理結果を取得するためのコードは以下のような形になります。
(Boolean)globalMap.get("tS3BucketExist_1_BUCKET_EXIST");
tS3ConnectionとtS3Close
tS3Connectionで一旦S3に接続した後は、他のコンポーネントでもコネクションを使用できます。 使い方としては、コネクションを使用したいコンポーネントの『既存の接続を使用』チェックボックスにチェックを入れます。 用済みになったコネクションはtS3Closeでクローズします。
tS3BucketList
S3に存在するバケット名の一覧をリスト化します。 他のコンポーネントにはIterateでつないで使用します。 バケット名を取得するためのコードは以下のような形になります。
(String)globalMap.get("tS3BucketList_1_CURRENT_BUCKET_NAME")
tS3Copy
tS3Copyコンポーネントは、ファイルのコピーができます。 コピー元/コピー先のバケット名とファイルのキー名を指定します。
tS3Delete
S3からファイルを削除します。 このコンポーネントはバケット名とキー名をセットするのみです。
tS3GetとtS3Put
tS3GetはS3からファイルを取得して、保存します。 バケット名、キー名、ジョブ実行環境への保存先のパスを指定します。 tS3Putは逆にS3にファイルをアップロードします。 S3のアップロード先のバケット、キー名、アップロード対象ファイルのパスを指定します。
tS3List
tS3BucketListと同じようにS3に保存されているファイル名をリスト化します。 『全てのバケットオブジェクトを表示』チェックボックスのチェックを外して、バケットを絞るのがいいかと思います。 キープレフィックスを指定すればリスト化される対象となるファイル名をさらに絞れます。 ファイルのキー名を取得するコードは以下のような形になります。
(String)globalMap.get("tS3List_1_CURRENT_KEY")
おわりに
以上となります。 簡単ですが、これだけでTalendからAmazonS3のオブジェクトへの操作は大体できると思います。